﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.IO.IsolatedStorage;
using System.Diagnostics;
using System.Collections.Generic;


namespace PhoneApp3
{

    public static class AppSettings
    {
        private static IsolatedStorageSettings Settings = System.IO.IsolatedStorage.IsolatedStorageSettings.ApplicationSettings;

        public static void StoreSetting(string settingName, string value)
        {
            StoreSetting<string>(settingName, value);
        }

        public static void StoreSetting<TValue>(string settingName, TValue value)
    {
        if (!Settings.Contains(settingName))
            Settings.Add(settingName, value);
        else
            Settings[settingName] = value;

        // EDIT: if you don't call Save then WP7 will corrupt your memory!
        Settings.Save();
    }

        public static bool TryGetSetting<TValue>(string settingName, TValue value)
        {
            //value = value;
            if (Settings.Contains(settingName))
            {
                //value = (TValue)Settings[settingName];
                return (bool) Settings[settingName];
            }

            //value = default(TValue);
            return false;
        }
    }
    //public class AppSettings
    //{
    //    IsolatedStorageSettings settings;
    //    const string Japanese = "Japanese Setting";
    //    const string Chinese = "Chinese Setting";
    //    const string Arabic = "Arabic Setting";
    //    const string English = "English Setting";
    //    const bool JapaneseSettingDefault = false;
    //    const bool ChineseSettingDefault = true;
    //    const bool ArabicSettingDefault = false;
    //    const bool EnglishSettingDefault = false;


    //    public AppSettings()
    //    {
    //        settings = IsolatedStorageSettings.ApplicationSettings;
    //    }
    //    public bool AddOrUpdateValue(string key, Object val)
    //    {
    //        bool valChanged = false;
    //        if (settings.Contains(key))
    //        {
    //            if (settings[key] != val)
    //            {
    //                settings[key] = val;
    //                valChanged = true;
    //            }
    //        }
    //        else
    //        {
    //            settings.Add(key, val);
    //            valChanged = true;
    //        }
    //        return valChanged;
    //    }

    //    public T GetValueOrDefault<T>(string Key, T defaultValue)
    //    {
    //        T value;

    //        // If the key exists, retrieve the value.
    //        if (settings.Contains(Key))
    //        {
    //            value = (T)settings[Key];
    //        }
    //        // Otherwise, use the default value.
    //        else
    //        {
    //            value = defaultValue;
    //        }
    //        return value;
    //    }

    //    /// <summary>
    //    /// Save the settings.
    //    /// </summary>
    //    public void Save()
    //    {
    //        settings.Save();
    //    }
    //    public bool JapaneseSetting
    //    {
    //        get
    //        {
    //            return GetValueOrDefault<bool>(Japanese, JapaneseSettingDefault);
    //        }
    //        set
    //        {
    //            if (AddOrUpdateValue(Japanese, value))
    //            {
    //                Save();
    //            }
    //        }
    //    }
    //    public bool ChineseSetting
    //    {
    //        get
    //        {
    //            return GetValueOrDefault<bool>(Chinese, ChineseSettingDefault);
    //        }
    //        set
    //        {
    //            if (AddOrUpdateValue(Chinese, value))
    //            {
    //                Save();
    //            }
    //        }
    //    }
    //    public bool EnglishSetting
    //    {
    //        get
    //        {
    //            return GetValueOrDefault<bool>(English, EnglishSettingDefault);
    //        }
    //        set
    //        {
    //            if (AddOrUpdateValue(English, value))
    //            {
    //                Save();
    //            }
    //        }
    //    }
    //    public bool ArabicSetting
    //    {
    //        get
    //        {
    //            return GetValueOrDefault<bool>(Arabic, ArabicSettingDefault);
    //        }
    //        set
    //        {
    //            if (AddOrUpdateValue(Arabic, value))
    //            {
    //                Save();
    //            }
    //        }
    //    }

    //}

}
